home *** CD-ROM | disk | FTP | other *** search
- /* index3.c: Print unique tokens from standard input */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #define MAXWIDTH 32
- #define MAXTOKENS 1024
-
- static int comp(const void *, const void *);
-
- static char tokens[MAXTOKENS][MAXWIDTH];
-
- main()
- {
- size_t i, n;
- size_t idx[MAXTOKENS];
- char *last;
- char *format = "%*[^A-Za-z0-9]%[A-Za-z0-9]";
-
- /* Read tokens & initialize index array */
- for (n = 0; n < MAXTOKENS &&
- scanf(format,tokens[n]) != EOF; ++n)
- idx[n] = n;
-
- qsort(idx,n,sizeof(idx[0]),comp);
-
- /* Output only unique tokens */
- puts((last = tokens[idx[0]]));
- for (i = 1; i < n; ++i)
- if (strcmp(tokens[idx[i]],last) != 0)
- puts((last = tokens[idx[i]]));
- return 0;
- }
-
- static int comp(const void *p1, const void *p2)
- {
- size_t i = * (size_t *) p1;
- size_t j = * (size_t *) p2;
-
- return strcmp(tokens[i],tokens[j]);
- }
-
-